import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取CSV文件
data = pd.read_csv('merge_data1.csv', encoding='utf-8')
data['发货记录完成时间']=pd.to_datetime(data['发货记录完成时间'])
data_2023=data[data['发货记录完成时间'].dt.year==2023]
print(data_2023)
'''
# 使用groupby方法按'客户名称'对数据进行分组，并对'发货吨位'列进行求和
sums = data_2023.groupby('客户名称')['发货吨位'].sum().reset_index()
# 如果您需要将结果转换为字典
data_dict = sums.set_index('客户名称')['发货吨位'].to_dict()

# 打印结果
print(data_dict)
sorted_items = sorted(data_dict.items(), key=lambda x: x[1])
# 输出排序后的结果
for key, value in sorted_items:
    print(key, value)
total_sum=sum(data_dict.values())
num_values=len(data_dict)
average=total_sum/num_values
print(average)
for i in sorted_items:
    if i[1] > average:
        print(i)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sums.plot(kind='bar', x='客户名称', y='发货吨位', title='客户需求量')
plt.xlabel('客户名称')
plt.ylabel('发货吨位')
plt.show()
'''
import pandas as pd
from datetime import datetime

# 读取CSV文件
df = pd.read_csv('merge_data1.csv')

# 确保日期列是日期类型
df['发货记录完成时间'] = pd.to_datetime(df['发货记录完成时间'])

# 筛选水泥的记录
cement_df = df[df['货品类型'] == 0]
# 筛选矿粉的记录
mineral_powder_df = df[df['货品类型'] == 1]

# 计算水泥和矿粉的总销量
cement_total_sales = cement_df['发货吨位'].sum()
mineral_powder_total_sales = mineral_powder_df['发货吨位'].sum()

# 准备两个列表来分别存储水泥和矿粉的信息
cement_result_list = []
mineral_powder_result_list = []

# 用于存储上一年的日期
last_year = datetime.now().year - 1

# 遍历水泥的DataFrame
for index, row in cement_df.iterrows():
    year = row['发货记录完成时间'].year
    if year == last_year:
        cement_result_list.append({
            '产品名称': row['货品类型'],
            '货款': row['货款'],
            '发货时间': row['发货记录完成时间'].strftime('%Y-%m-%d'),
            '货品单价': row['单价']
        })
    else:
        # 如果不是上一年，跳过
        pass

# 遍历矿粉的DataFrame
for index, row in mineral_powder_df.iterrows():
    year = row['发货记录完成时间'].year
    if year == last_year:
        mineral_powder_result_list.append({
            '产品名称': row['货品类型'],
            '货款': row['货款'],
            '发货时间': row['发货记录完成时间'].strftime('%Y-%m-%d'),
            '货品单价': row['单价']
        })
    else:
        # 如果不是上一年，跳过
        pass

# 打印水泥和矿粉的总销量以及详细信息列表
print(f"水泥的总销量为：{cement_total_sales}吨")
print("水泥详细信息列表：")
for item in cement_result_list:
    print(item)

print(f"\\n矿粉的总销量为：{mineral_powder_total_sales}吨")
print("矿粉详细信息列表：")
for item in mineral_powder_result_list:
    print(item)